package DyingBaby.backend.common;

import java.util.Scanner;

/**
 * 交互式缓存配置管理类
 * 提供用户交互式选择是否显示缓存统计和日志信息
 */
public class InteractiveCacheConfig {
    
    private static Scanner scanner = new Scanner(System.in);
    private static boolean enableInteractive = true;
    private static boolean lastChoice = true; // 记录用户上次的选择，默认显示
    
    /**
     * 询问用户是否查看缓存统计信息
     * @return true表示查看，false表示不查看
     */
    public static boolean askForCacheStats() {
        if (!enableInteractive) {
            return lastChoice;
        }
        
        System.out.println("\n是否查看缓存统计信息？");
        System.out.println("1. 查看");
        System.out.println("2. 不查看");
        System.out.print("请选择 (1/2): ");
        
        while (true) {
            try {
                String input = scanner.nextLine().trim();
                
                if ("1".equals(input)) {
                    lastChoice = true;
                    return true;
                } else if ("2".equals(input)) {
                    lastChoice = false;
                    return false;
                } else {
                    System.out.print("无效输入，请输入 1 或 2: ");
                }
            } catch (Exception e) {
                System.out.print("输入错误，请输入 1 或 2: ");
            }
        }
    }
    
    /**
     * 设置用户的选择（用于控制后续的日志显示）
     * @param choice true表示用户选择查看，false表示不查看
     */
    public static void setUserChoice(boolean choice) {
        lastChoice = choice;
    }
    
    /**
     * 询问用户是否查看详细日志信息
     * @return true表示查看，false表示不查看
     */
    public static boolean askForDetailedLogs() {
        if (!enableInteractive) {
            return false; // 默认不显示详细日志
        }
        
        System.out.println("\n是否查看详细日志信息？");
        System.out.println("1. 查看");
        System.out.println("2. 不查看");
        System.out.print("请选择 (1/2): ");
        
        while (true) {
            try {
                String input = scanner.nextLine().trim();
                
                if ("1".equals(input)) {
                    return true;
                } else if ("2".equals(input)) {
                    return false;
                } else {
                    System.out.print("无效输入，请输入 1 或 2: ");
                }
            } catch (Exception e) {
                System.out.print("输入错误，请输入 1 或 2: ");
            }
        }
    }
    
    /**
     * 设置是否启用交互模式
     * @param enabled true启用交互模式，false禁用
     */
    public static void setInteractiveEnabled(boolean enabled) {
        enableInteractive = enabled;
    }
    
    /**
     * 是否启用交互模式
     */
    public static boolean isInteractiveEnabled() {
        return enableInteractive;
    }
    
    /**
     * 设置默认选择（当交互模式禁用时使用）
     * @param defaultChoice 默认选择
     */
    public static void setDefaultChoice(boolean defaultChoice) {
        lastChoice = defaultChoice;
    }
    
    /**
     * 获取上次用户的选择
     */
    public static boolean getLastChoice() {
        return lastChoice;
    }
    
    /**
     * 关闭扫描器资源
     */
    public static void close() {
        if (scanner != null) {
            scanner.close();
        }
    }
}
